perm filename APTST[AP,SYS] blob sn#067614 filedate 1973-10-20 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00005 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002		TITLE	APTST
C00005 00003	CONVRT:	JRST	GETCH		0: tape feed
C00008 00004	UPPER:	JRST	GETCH		0: tape feed
C00011 00005	SETSHF  CLRSHF  SPE1-7
C00014 ENDMK
C⊗;
	TITLE	APTST

A←1
B←2
CHAR←5
SHIFT←6
P←17

CR←←15 LF←←12

IBUF:	BLOCK	3

APTST:	RESET
	INIT	17,410
	SIXBIT	/TTY12/
	IBUF
	JRST	[OUTSTR [ASCIZ /INIT FAILED ON TTY12
/]
		HALT	APTST]
	MOVEI	A,000700	;BYTE SIZE OF 7 BITS PLEASE
	HRLM	A,IBUF+1	;INTO BYTE POINTER IN BUFFER HEADER
	TDZA	SHIFT,SHIFT
GETCH:	SOSG	IBUF+2		;any chars in AP buffer?
	IN	17,		;get some more news
	JRST	GETCH1
	OUTSTR	[ASCIZ/ IN UUO FAILED ON AP LINE
/]
	HALT	.

GETCH1:	ILDB	CHAR,IBUF+1	;get a char
	TRZE	CHAR,100	;check and mask out 100 bit of incoming AP char
	OUTSTR	[ASCIZ/ ILLEGAL CHAR FROM AP LINE
/]
	ADD	CHAR,SHIFT	;SHIFT contains either 100 (octal) or zero
	XCT	CONVRT(CHAR)
CHAROK:	OUTCHR	CHAR
	JRST	GETCH		;return for next char
CONVRT:	JRST	GETCH		;0: tape feed
	MOVEI	CHAR,"e"	;1
	MOVEI	CHAR,LF		;2: elevate→line feed
	MOVEI	CHAR,"a"	;3
	MOVEI	CHAR," "	;4: space.
	MOVEI	CHAR,"s"	;5
	MOVEI	CHAR,"i"	;6
	MOVEI	CHAR,"u"	;7
	MOVEI	CHAR,CR		;10: carriage return
	MOVEI	CHAR,"d"	;11
	MOVEI	CHAR,"r"	;12
	MOVEI	CHAR,"j"	;13
	MOVEI	CHAR,"n"	;14
	MOVEI	CHAR,"f"	;15
	MOVEI	CHAR,"c"	;16
	MOVEI	CHAR,"k"	;17
	MOVEI	CHAR,"t"	;20
	MOVEI	CHAR,"z"	;21
	MOVEI	CHAR,"l"	;22
	MOVEI	CHAR,"w"	;23
	MOVEI	CHAR,"h"	;24
	MOVEI	CHAR,"y"	;25
	MOVEI	CHAR,"p"	;26
	MOVEI	CHAR,"q"	;27
	MOVEI	CHAR,"o"	;30
	MOVEI	CHAR,"b"	;31
	MOVEI	CHAR,"g"	;32
	JRST	SETSHF		;33: shift
	MOVEI	CHAR,"m"	;34
	MOVEI	CHAR,"x"	;35
	MOVEI	CHAR,"v"	;36
	JRST	CLRSHF		;37: unshift

	MOVEI	CHAR," "	;40: thin space→space
	MOVEI	CHAR,"3"	;41
	MOVEI	CHAR,LF		;42: paper feed→line feed
	MOVEI	CHAR,"$"	;43
	MOVEI	CHAR," "	;44: add thin space→space
	MOVEI	CHAR," "	;45: em space→space
	MOVEI	CHAR,"8"	;46
	MOVEI	CHAR,"7"	;47
	MOVEI	CHAR,"'"	;50
	MOVEI	CHAR,"-"	;51
	MOVEI	CHAR,"4"	;52
	JRST	GETCH		;53: bell
	MOVEI	CHAR,","	;54: comma
	JRST	GETCH		;55: undefined
	MOVEI	CHAR," "	;56: en space→space
	JRST	GETCH		;57: quad right
	MOVEI	CHAR,"5"	;60
	MOVEI	CHAR,")"	;61
	MOVEI	CHAR," "	;62: em space→space
	MOVEI	CHAR,"2"	;63
	JRST	GETCH		;64: em leader
	MOVEI	CHAR,"6"	;65
	MOVEI	CHAR,"0"	;66
	JRST	GETCH		;67: en leader
	MOVEI	CHAR,"9"	;70
	JRST	GETCH		;71: upper rail
	MOVEI	CHAR,";"	;72
	JRST	GETCH		;73: lower rail
	MOVEI	CHAR,"."	;74: period
	MOVEI	CHAR,"1"	;75
	JRST	GETCH		;76: undefined
	JRST	GETCH		;77: rub out
UPPER:	JRST	GETCH		;0: tape feed
	MOVEI	CHAR,"E"	;1
	MOVEI	CHAR,LF		;2: elevate→line feed
	MOVEI	CHAR,"A"	;3
	MOVEI	CHAR," "	;4: space.  make into 4 spaces if after LF
	MOVEI	CHAR,"S"	;5
	MOVEI	CHAR,"I"	;6
	MOVEI	CHAR,"U"	;7
	MOVEI	CHAR,CR		;10: carriage return
	MOVEI	CHAR,"D"	;11
	MOVEI	CHAR,"R"	;12
	MOVEI	CHAR,"J"	;13
	MOVEI	CHAR,"N"	;14
	MOVEI	CHAR,"F"	;15
	MOVEI	CHAR,"C"	;16
	MOVEI	CHAR,"K"	;17
	MOVEI	CHAR,"T"	;20
	MOVEI	CHAR,"Z"	;21
	MOVEI	CHAR,"L"	;22
	MOVEI	CHAR,"W"	;23
	MOVEI	CHAR,"H"	;24
	MOVEI	CHAR,"Y"	;25
	MOVEI	CHAR,"P"	;26
	MOVEI	CHAR,"Q"	;27
	MOVEI	CHAR,"O"	;30
	MOVEI	CHAR,"B"	;31
	MOVEI	CHAR,"G"	;32
	JRST	SETSHF		;33: shift
	MOVEI	CHAR,"M"	;34
	MOVEI	CHAR,"X"	;35
	MOVEI	CHAR,"V"	;36
	JRST	CLRSHF		;37: unshift

	MOVEI	CHAR," "	;40: thin space→space
	JRST	SPE3		;41: 3/8
	MOVEI	CHAR,LF		;42: paper feed→line feed
	MOVEI	CHAR,"!"	;43
	MOVEI	CHAR," "	;44: add thin space→space
	MOVEI	CHAR," "	;45: em space→space
	MOVEI	CHAR,"-"	;46
	JRST	SPE7		;47: 7/8
	MOVEI	CHAR,"'"	;50: left quote→right quote (ttys dont have left quote)
	MOVEI	CHAR,"+"	;51
	JRST	SPE4		;52: 1/2
	JRST	GETCH		;53: bell
	MOVEI	CHAR,","	;54: comma
	JRST	GETCH		;55: undefined
	MOVEI	CHAR," "	;56: en space→space
	JRST	GETCH		;57: quad right
	JRST	SPE5		;60: 5/8
	MOVEI	CHAR,"("	;61
	MOVEI	CHAR," "	;62: em space→space
	JRST	SPE2		;63: 1/4
	JRST	GETCH		;64: em leader
	JRST	SPE6		;65: 3/4
	MOVEI	CHAR,"?"	;66
	JRST	GETCH		;67: en leader
	MOVEI	CHAR,"&"	;70
	JRST	GETCH		;71: upper rail
	MOVEI	CHAR,":"	;72
	JRST	GETCH		;73: lower rail
	MOVEI	CHAR,"."	;74: period
	JRST	SPE1		;75: 1/8
	JRST	GETCH		;76: undefined
	JRST	GETCH		;77: rub out
;SETSHF  CLRSHF  SPE1-7

SETSHF:	MOVEI	SHIFT,100
	JRST	GETCH
CLRSHF:	SETZM	SHIFT
	JRST	GETCH
SPE1:	OUTSTR	[ASCIZ $ 1/8$]
	JRST	GETCH
SPE2:	OUTSTR	[ASCIZ $ 1/4$]
	JRST	GETCH
SPE3:	OUTSTR	[ASCIZ $ 3/8$]
	JRST	GETCH
SPE4:	OUTSTR	[ASCIZ $ 1/2$]
	JRST	GETCH
SPE5:	OUTSTR	[ASCIZ $ 5/8$]
	JRST	GETCH
SPE6:	OUTSTR	[ASCIZ $ 3/4$]
	JRST	GETCH
SPE7:	OUTSTR	[ASCIZ $ 7/8$]
	JRST	GETCH

	END	APTST